\section{Conclusion}

Coursebook is a distributed, highly-concurrent, multi-threaded web service that
searches for general education courses for Cal Poly students, based on their
interests. Being a distributed, concurrent, and threaded application introduces
common problems that have been addressed by many design patterns. These design
patterns have been developed to utilize the knowledge that others have gained in
solving these common problems. Coursebook's use of these design patterns is
beneficial in the design of the service and heightens the quality of the
service.

Coursebook utilizes the fundamental design patterns Iterator, Singleton, and
Command patterns in the core of its current implementation. It also uses the
Active Object pattern and the Leader/Follower pattern through its use of the
Facebook REST client and the Apache server, respectively. Future work on
Coursebook includes adding client-side concurrency and improving user perceived
response time, fault tolerance, and reliability. This functionality can be
achieved through the use of the Pipeline and the Recoverable Distributor
patterns.

With the inclusion of these design patterns, Coursebook will have achieved the
following requirements:

\singlespacing
\begin{enumerate}
\item accessibility
\item responsiveness
\item fault tolerance
\item maintainability
\end{enumerate}

Coursebook began as a small team project, but through proper design and
programming practices, Coursebook can grow to be a full-scale, practical,
quality web application.
